This is BenRayfield's proposed plans document for Junto, written 6/18/2010, and I also may use some of this in my other softwares later.

==How to start Junto==
Go to a webpage running AdobeFlashOrFlex, or
Download P2pProgram as 1 file, double-click that file, and it does the same thing as AdobeFlashOrFlex.

==Parts of the Junto Collective==
Symbol //Globally unique text, like #junto (or however you want to write it).
User //Human or AI simulating a Human
WebCam //Input from User, output to AdobeFlashOrFlex or P2pProgram
Speakers //Input from AdobeFlashOrFlex or P2pProgram, output to User
Mouse //Input from User, output to AdobeFlashOrFlex or P2pProgram
Keyboard //Input from User, output to AdobeFlashOrFlex or P2pProgram
AdobeFlashOrFlex //Input and output to/from User and P2pProgram
VoiceToText //AI that converts sounds to words. Part of P2pProgram
GlobalTextSearch //AI that communicates with P2pPrograms to find new text
UserInteractionAI //AI that watches each User and communicates in UserInteractionLanguage with P2pProgram.
UserInteractionLanguage //made of sequences of Symbol. This is the language UserInteractionAI understands.
BayesianNetwork //Standard type of AI, and the kind most preferred by the Singularity Institute for AI. Combines many ideas in UserInteractionLanguage in a statistical way to make it smarter. Its simply a statistics tool. It doesn't have intention. Each P2pProgram should have one.
NetOfTrustAlgorithm //Runs on each P2pProgram using only what is known on that computer (like SHA512 hashed passwords of all known users, which can't be used to caculate the password but can be given to someone to verify the password), needing no central organization. Do we need this? Required if we use any passwords or if the network can not handle deception between computers.
P2pProgram //Peer or superpeer, server and/or client. Also does same thing as WebBrowser. Communicates with AdobeFlashOrFlex and other P2pProgram in UserInteractionLanguage.
Database //A large memory. Part of P2pProgram. May be completely in memory, on hard-drive, or many other possibilities.
WebCamSoftware //Access to WebCam. Similar problems as 3dGraphics for compatibility. Part of P2pProgram.
3dGraphics //Fast access to video-card, like OpenGL, which works on all computers if automatically recompiled to a separate executable file for each computer type. Part of P2pProgram.
SphereOfPixels //See my graphics/audio algorithm below that is based on curved space.

==Types of network communication==
HTTP is more reliable. UDP is faster. For video and audio, we should use UDP if its available, because any data lost in the network will simply be a small change in the sound or video for a fraction of a second, and it does not happen often. For text or files or other reductionist communications, use HTTP.

==How to get around the censoring that some of the internet authorities do==
Around 85% (I'm not sure of the percent, but its a lot) of P2pProgram will run on internet service that is censored in the following way:
Most (or all?) incoming communications are not received unless they are a direct result of an outgoing communication.
For example, my internet service is currently "Charter Communications" and they hack my network packets just after I send them, and just before I receive them, for the purpose of making http://www.whatsmyip.org (and every other website) tell me a different ip address than my computer thinks it has (In Windows run ipconfig or in Linux run /sbin/ifconfig). I'm using their network router (which is also the cable modem), and both of my computers have the same IP address (viewed from the internet), but have different IP addresses (if viewed from either of the 2 computers). This form of censoring is a result of the IP4 type of internet communication, and the reason IP4 is used instead of IP6 is because it gives them an excuse to censor p2p programs, which threaten their authority.
Charter Communications allowed me to get around that in some cases, by typing 192.168.0.1 into my web browser, typing a username and password, and setting u "port forwarding" for the specific port numbers I wanted to receive internet communications on. They allowed me to turn off censoring on up to 30 of 65536 total port numbers. Most of our users are not going to do that, so we have to get around the censoring some other way.
I am not proposing we censor it. I'm describing how many ISPs (internet service providers) censor peer-to-peer programs, and how we can work around that.
If you have a "static ip address", then this is probably not true, and if you have a "dynamic ip address" then I don't know if its true. Its a problem on many parts of the internet, and less than 1% of internet users want to fix it, probably because they think "its broken" instead of "they're censoring me".
THEREFORE, as many other p2p programs have done, we should use a peer/superpeer design. Peer is a P2pProgram that only connects to a few superpeer P2pPrograms, and continues to request communications from them at least once per second. Superpeer P2pPrograms can start communications with any other superpeer P2pProgram, because their internet service is not censored.

==Fuzzy Language to describe user interactions==
Words/letters/people/skills/resources/AIs/etc are each a "Symbol" (described above) in this "UserInteractionLanguage" language, and any of that can be in the 3d space or sent in network communications. There is at least 1 UserInteractionAI that watches each User, and it forms ideas in this language based on how the user interacts with everything. Every click, every mouse movement, higher or lower microphone volume, change in average color of the WebCam video, or many other things can be communicated and thought about in UserInteractionLanguage, which is simply a sequence of Symbol, like a sentence where words can be more than text.

==A way to display unlimited webcam videos at once efficiently==

SIMILAR TO: Why is there (usually or always?) a speed of light limit? I don't know, but I'm speculating that its one of the simpler ways for physics to exist without having to calculate the combination of every 2 particles together. If its outside the "light cone", then in most cases, don't need to waste time calculating that. I'm not saying theres an intelligence making that happen, but simple things tend to evolve or form much more often than complex things.

If anyone claims a patent on the following, then we will negate that patent because its similar to some parts of the laws-of-physics before it was patented. I choose not to waste my time reading through millions of patents when I know that I'm thinking of things on my own. Its easier to find defenses against them, just in case they exist.

ALGORITHM: Use 1 3d space that everything is in. 7 billion people and 7 billion computers, and all their data and videos and sounds and text etc, all in this 1 3d space, and all visible, with transparency and reflections and other graphics effects available. The 6 sides of the cube bounding the 3d space should be connected to their opposite so it looks like a continuous space with no ends. Or maybe we should use a sphere instead of a cube, and connect each point on the surface to its opposite, for the same appearance of being infinite in all directions.
Everything in this 3d space will always have a simulated sphere of video around it, meaning that if you are at its 3d position, and you look in any direction, you will know what color that pixel should be. Exactly at that 3d position is the video rectangle, which could be viewed as always facing you from wherever you are, or it could be wrapped around a smaller sphere, or theres many ways to do it.
Heres the part thats similar to the speed-of-light limit: At least 10 times per second, each of these 3d spheres of pixels needs to update its sphere of pixels from the simulated light coming from outside, and to send light from itself to the other 3d spheres-of-pixels. Updates are only done for the closest few SphereOfPixels to the current SphereOfPixels. Each SphereOfPixels changes some of its pixels color a little to do transparency, or completely to not use transparency. Emergently, you will be able to go to any position in 3d, look in any direction, and see all 3d objects, down to the last pixel of accuracy, from all 7 billion people and 7 billion computers connected to Junto (if we get that many people to use it and get computers to the people who don't have them). There is no limit to how many objects you can put in this 3d curved space, because more objects does not slow it down more. You just add more computers for more objects, and its done peer-to-peer, letting the "speed of light" limit delay our view of things farther away, and reflections/transparency/interactions of it.
We can scale up to a global network by using this curved spacetime algorithm. Its not exactly how our "laws of physics" are (since I don't know physics well enough to say), but it is similar. Junto can have the graphics of a grid of supercomputers if we accept small delays (for things that are farther away) and define the whole thing as curved spacetime. Why would the delays be small? Its our simulated physics system. We can define the speed of light to be however slow or fast we want, and the graphics will do it.
Another advantage of using curved spacetime simulations is you don't need to store the history of communications, because you can find their reflections by going far away, the same way you can receive television broadcasts from years ago by trying to receive them lightyears away (if you knew how to get there instantly). Its our physics simulation. We can move objects instantly any time we want.

Audio? Its higher bandwidth than a single pixel, so we can't use a SphereOfPixels for it, but we can keep 1 current sound in the center of each SphereOfPixels and update it similarly, so the audio will update at the same speed as the video updates. I was watching a NOVA tv show, and they were asking why gravity moves at the speed of light. I think that's the reason.

To summarize this graphics/audio/physics section, we should simulate a variation of curved spacetime to overcome p2p scaling problems and display all objects on all computers all the time, some closer and some farther away.

END: This is BenRayfield's proposed plans document for Junto, written 6/18/2010, and I also may use some of this in my other softwares later.